package com.zyl.blog.common.config;

import jakarta.validation.constraints.NotEmpty;
import lombok.Data;
import org.springframework.boot.context.properties.ConfigurationProperties;
import org.springframework.stereotype.Component;
import org.springframework.validation.annotation.Validated;

/**
 * 阿里云 OSS 配置项（自动从 application.yml 绑定）
 *
 * <p>配置示例：
 * aliyun:
 *   oss:
 *     endpoint: oss-cn-shanghai.aliyuncs.com
 *     access-key-id: LTAI5t**********N9y
 *     access-key-secret: R6lqS8u**************zW8u
 *     bucket-name: my-bucket
 *     url-expire-seconds: 3600   # 临时URL有效期（可选）
 * @version v1.0
 * @ProjectName: Personal_Blog
 * @Package: com.zyl.common.config
 * @ClassName: AliOSSProperties
 * @Author FinalFantasy
 * @Date 2025/2/14-16:22
 */
@Data
@Validated  // 启用JSR-303校验
@Component
@ConfigurationProperties(prefix = "aliyun.oss")
public class AliOSSProperties {

    /**
     * OSS 访问端点（必需）
     */
    @NotEmpty(message = "OSS endpoint 不能为空")
    private String endpoint;

    /**
     * 访问密钥ID（必需）
     */
    @NotEmpty(message = "OSS accessKeyId 不能为空")
    private String accessKeyId;

    /**
     * 访问密钥（必需）
     */
    @NotEmpty(message = "OSS accessKeySecret 不能为空")
    private String accessKeySecret;

    /**
     * 存储桶名称（必需）
     */
    @NotEmpty(message = "OSS bucketName 不能为空")
    private String bucketName;

    /**
     * 临时URL有效期（秒），默认永久（0）
     */
    private Integer urlExpireSeconds = 0;
}